// 文件路径: dbms/execution/execution/Executor.java
package com.dbms.execution.execution;

import com.dbms.common.Schema;
import com.dbms.common.Tuple;
import com.dbms.execution.plan.PlanNode; // 【新增】导入 PlanNode

/**
 * Executor 接口是所有查询计划执行器的父接口。
 */
public interface Executor {

    /**
     * 初始化执行器，在调用next()之前调用。
     */
    void open();

    /**
     * 返回查询结果的下一个元组。
     * @return 如果还有元组，则返回它；否则返回 null。
     */
    Tuple next();

    /**
     * 清理执行器，释放所有资源。
     */
    void close();

    /**
     * 返回此执行器输出的元组的Schema。
     */
    Schema getSchema();

    /**
     * 【新增】为 EXPLAIN ANALYZE 生成计划节点。
     * 这个方法应该在执行器完全执行（即next()返回null）之后被调用，
     * 以便获取准确的性能指标。
     * @return 代表此执行器及其子执行器性能的 PlanNode。
     */
    PlanNode getPlanNode();
}